home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib07.dsk
/
DOS COMMAND CHANGER.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
4KB
|
110 lines
1 REM **************************
2 REM * DOS COMMAND CHANGER *
3 REM * (DOS 3.2 / 3.3) *
4 REM * BY PATRICK CLYNE *
5 REM * COPYRIGHT (C) 1981 *
6 REM * BY MICRO-SPARC INC *
7 REM **************************
10 PRINT ""
100 DIM N$(28),X(200),S$(28),NC$(28)
110 TEXT : HOME : SPEED= 255
115 REM LINES 120-124 FIND THE DOS VERSION AND SET THE DS PARAMETER
116 REM 3.3 --> DS=7
117 REM 3.2 --> DS=8
120 Q = PEEK(978):Q1 = (Q +34) *256 +214:Q2 = (Q +9) *256 +179:DS = 0
122 IF NOT PEEK(Q2) AND ( PEEK(Q1) = 240 OR PEEK(Q1) = 96) THEN DS = 8
124 IF PEEK(Q2) = 3 THEN DS = 7
128 KT = 1:Y = 1:BY = 132: IF DS = 0 THEN PRINT "I CANNOT WORK WITH THIS DOS.": PRINT "THE DOS LOADED IS NOT 3.2 OR 3.3.": END
130 FOR I = 1 TO 28: READ S$(I): NEXT
140 T$ = S$(22):S$(22) = S$(8):S$(8) = T$
500 IF PEEK(987) <120 THEN IOB = PEEK(987) *256 +232
510 IF PEEK(987) >120 THEN IOB = ( PEEK(987) -128) *256 +231 -32767
520 POKE 1001,76: POKE 1002,181: POKE 1003, PEEK(987):RWTS = 995
530 TRK = IOB +4:SEC = IOB +5:AHIGH = IOB +9:ALOW = IOB +8:COM = IOB +12:VOL = IOB +3:ERR = IOB +13
540 POKE TRK,KT
550 POKE SEC,DS
560 POKE VOL,0
570 POKE COM,1
580 POKE AHIGH,179
590 POKE ALOW,187
600 POKE ERR,0
610 PRINT "INSERT DISK AND PRESS ANY KEY ";: GET U$
620 CALL RWTS
630 LOC = (179 *256) +187
640 KP = LOC +BY
650 NLOC = LOC +256
660 POKE AHIGH, INT(NLOC/256)
670 POKE ALOW,NLOC -256 * INT(NLOC/256)
680 POKE SEC,DS +1: CALL RWTS
1000 ST = LOC +BY
1010 FOR K = 1 TO 28
1020 PRINT ".";
1030 X = PEEK(ST)
1050 IF X >96 AND X <192 THEN X = X -64
1060 IF X >192 THEN X = X -128:FL = 9
1070 C$ = CHR$(X)
1080 IN$ = IN$ +C$
1090 IF X = 35 OR X = 99 THEN FL = 9
1100 IF FL = 9 THEN FL = 0: GOTO 1120
1110 ST = ST +1: GOTO 1030
1120 N$(K) = IN$:IN$ = ""
1130 ST = ST +1
1140 NEXT K
1150 T$ = N$(22):N$(22) = N$(8):N$(8) = T$
2000 HOME : PRINT TAB( 15)"COMMAND CHANGER"
2005 IF DS = 8 THEN VTAB 16: HTAB 16: PRINT "2";: HTAB 1
2010 VTAB 3: PRINT " CURR"; SPC( 5);"STD"; SPC( 09);"CURR"; SPC( 4);"STD"
2020 FOR I = 1 TO 40: PRINT CHR$(45);: NEXT
2030 VTAB 5
2040 FOR I = 1 TO 14
2050 HTAB 1: PRINT I;: HTAB 4: PRINT N$(I);: HTAB 13: PRINT S$(I);: HTAB 22: PRINT I +14;: HTAB 25: PRINT N$(I +14);: HTAB 33: PRINT S$(I +14)
2060 NEXT
2070 T$ = N$(22):N$(22) = N$(8):N$(8) = T$
2080 VTAB 20: HTAB 1: CALL -958: INPUT "ENTER SELECTION NUMBER -> ";S$:S = VAL(S$): IF S <0 OR S >28 THEN 2080
2085 IF S = 8 OR S = 22 THEN G = 9
2090 IF S = 0 THEN 20000
2100 IF S >14 THEN 2140
2110 VTAB 4 +S: HTAB 1: FLASH : PRINT S: NORMAL
2120 U = 9
2130 GOTO 2150
2140 VTAB 4 +S -14: HTAB 22: FLASH : PRINT S: NORMAL
2150 VTAB 20: HTAB 1: CALL -958: INPUT "ENTER NEW COMMAND -> ";NC$: IF NC$ = "" THEN 2150
2160 IF U = 9 THEN U = 0: VTAB 4 +S: HTAB 1: INVERSE : PRINT S: NORMAL : GOTO 2180
2170 VTAB 4 +S -14: HTAB 22: INVERSE : PRINT S: NORMAL
2180 NC$(S) = NC$
2190 GOSUB 50000
2200 GOTO 2080
20000 Y = 0: VTAB 21: PRINT "COMPUTING"
20001 FOR I = 1 TO 28
20002 IF G = 9 THEN G = 0:T$ = NC$(22):NC$(22) = NC$(8):NC$(8) = T$
20010 IF NC$(I) = "" THEN 20060
20015 N$(I) = NC$(I)
20060 NEXT
20070 FOR I = 1 TO 28
20080 K = LEN(N$(I))
20090 FOR J = 1 TO K -1
20100 Y = Y +1:X(Y) = ASC( MID$ (N$(I),J,1))
20110 NEXT J
20120 Y = Y +1:P = ASC( RIGHT$(N$(I),1)) +128
20121 IF P = 227 THEN P = 163
20125 X(Y) = P
20130 NEXT I
20140 FOR ZZ = 1 TO Y: POKE KP +ZZ -1,X(ZZ): NEXT
20150 POKE AHIGH,179
20160 POKE ALOW,187
20165 POKE COM,2
20166 POKE SEC,DS
20170 CALL RWTS
20180 POKE AHIGH, INT(NLOC/256)
20190 POKE ALOW,NLOC -256 * INT(NLOC/256)
20198 POKE SEC,DS +1
20200 CALL RWTS
20300 VTAB 21: HTAB 1: CALL -958: PRINT "DONE"
20400 VTAB 22: HTAB 1: CALL -958: PRINT "MORE (Y/N)? ";: GET YN$: IF YN$ = "Y" THEN RUN
20405 IF YN$ = "N" THEN END
20406 GOTO 20400
50000 IF S >14 THEN 50050
50010 VTAB 4 +S: HTAB 4: PRINT " ": VTAB 4 +S: HTAB 4: PRINT NC$: GOTO 50090
50050 VTAB 4 +S -14: HTAB 25: PRINT " ": VTAB 4 +S -14: HTAB 25: PRINT NC$
50090 RETURN
60000 DATA INIT,LOAD,SAVE,RUN,CHAIN,DELETE,LOCK,UNLOCK,CLOSE,READ,EXEC,WRITE,POSITION,OPEN,APPEND,RENAME,CATALOG,MON,NOMON,PR#,IN#,MAXFILES,FP,INT,BSAVE,BLOAD,BRUN,VERIFY